package com.smart.community.feign.region.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 物业公司户型配置DTO
 * 用于Feign接口数据传输
 * 
 * @author Wu.Liang
 * @version 1.0.0
 * @since 2025-01-30
 */
@Data
@Schema(description = "物业公司户型配置DTO")
public class PropertyHouseTypeDTO {

    @Schema(description = "主键ID")
    private Long id;

    @Schema(description = "物业公司ID")
    private Long propertyCompanyId;

    @Schema(description = "户型名称")
    private String houseTypeName;

    @Schema(description = "建筑面积（平方米）")
    private BigDecimal totalArea;

    @Schema(description = "套内面积（平方米）")
    private BigDecimal usableArea;

    @Schema(description = "公摊面积（平方米）")
    private BigDecimal publicArea;

    @Schema(description = "得房率（%）")
    private BigDecimal efficiencyRate;

    @Schema(description = "卧室总数")
    private Integer bedroomCount;

    @Schema(description = "主卧数量")
    private Integer masterBedroomCount;

    @Schema(description = "次卧数量")
    private Integer secondaryBedroomCount;

    @Schema(description = "儿童房数量")
    private Integer childrenRoomCount;

    @Schema(description = "客厅数量")
    private Integer livingRoomCount;

    @Schema(description = "餐厅数量")
    private Integer diningRoomCount;

    @Schema(description = "厨房数量")
    private Integer kitchenCount;

    @Schema(description = "卫生间总数")
    private Integer bathroomCount;

    @Schema(description = "主卫数量")
    private Integer masterBathroomCount;

    @Schema(description = "公卫数量")
    private Integer publicBathroomCount;

    @Schema(description = "客卫数量")
    private Integer guestBathroomCount;

    @Schema(description = "书房数量")
    private Integer studyRoomCount;

    @Schema(description = "储物间数量")
    private Integer storageRoomCount;

    @Schema(description = "衣帽间数量")
    private Integer cloakroomCount;

    @Schema(description = "入户花园数量")
    private Integer entranceGardenCount;

    @Schema(description = "整体朝向")
    private String orientation;

    @Schema(description = "主卧朝向")
    private String masterBedroomOrientation;

    @Schema(description = "客厅朝向")
    private String livingRoomOrientation;

    @Schema(description = "楼层位置")
    private String floorPosition;

    @Schema(description = "是否有花园")
    private Boolean hasGarden;

    @Schema(description = "是否有露台")
    private Boolean hasTerrace;

    @Schema(description = "是否有阁楼")
    private Boolean hasAttic;

    @Schema(description = "是否方正")
    private Boolean isSquare;

    @Schema(description = "是否有异形空间")
    private Boolean hasIrregularSpace;

    @Schema(description = "是否南北通透")
    private Boolean isTransparent;

    @Schema(description = "是否全明户型")
    private Boolean isAllBright;

    @Schema(description = "是否动静分区")
    private Boolean hasDynamicStaticSeparation;

    @Schema(description = "是否干湿分区")
    private Boolean hasWetDrySeparation;

    @Schema(description = "阳台数量")
    private Integer balconyCount;

    @Schema(description = "阳台类型")
    private String balconyType;

    @Schema(description = "阳台风格")
    private String balconyStyle;

    @Schema(description = "飘窗数量")
    private Integer bayWindowCount;

    @Schema(description = "飘窗类型")
    private String bayWindowType;

    @Schema(description = "厨房是否带生活阳台")
    private Boolean kitchenHasBalcony;

    @Schema(description = "卫生间是否带浴缸")
    private Boolean bathroomHasBathtub;

    @Schema(description = "卫生间是否干湿分离")
    private Boolean bathroomHasSeparation;

    @Schema(description = "卫生间是否有窗户")
    private Boolean bathroomHasWindow;

    @Schema(description = "层高")
    private BigDecimal floorHeight;

    @Schema(description = "净高")
    private BigDecimal netHeight;

    @Schema(description = "是否有loft挑高")
    private Boolean hasLoft;

    @Schema(description = "是否有复式")
    private Boolean hasDuplex;

    @Schema(description = "是否可改户型")
    private Boolean canModify;

    @Schema(description = "是否有赠送面积")
    private Boolean hasGiftArea;

    @Schema(description = "赠送面积描述")
    private String giftAreaDesc;

    @Schema(description = "户型图类型")
    private String floorPlanType;

    @Schema(description = "户型图状态")
    private String floorPlanStatus;

    @Schema(description = "户型图URL")
    private String floorPlanUrl;

    @Schema(description = "户型优势标签")
    private List<String> advantageTags;

    @Schema(description = "适用人群")
    private String suitableCrowd;

    @Schema(description = "备注说明")
    private String remark;

    @Schema(description = "状态：0-禁用，1-启用")
    private Integer status;

    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    @Schema(description = "更新时间")
    private LocalDateTime updateTime;

    @Schema(description = "创建人ID")
    private Long createBy;

    @Schema(description = "更新人ID")
    private Long updateBy;

    @Schema(description = "删除标志：0-未删除，1-已删除")
    private Integer deleted;

    @Schema(description = "版本号")
    private Integer version;
}
